import Print from './printarea.js';

/**
 * @file 打印
 * 指令`v-print`,默认打印整个窗口
 * 传入参数`v-print="'#id'"` , 参数为需要打印局部的盒子标识.
 */
export default {
  directiveName: 'print',
  bind(el, binding, vnode) {
    let vue = vnode.context;
    let closeBtn = true;
    let id = '';
    el.addEventListener('click', () => {
      vue.$nextTick(() => {
        if (typeof binding.value === 'string') {
          id = binding.value;
        } else if (typeof binding.value === 'object' && !!binding.value.id) {
          id = binding.value.id;
          let ids = id.replace(new RegExp("#", "g"), '');
          let elsdom = document.getElementById(ids);
          if (!elsdom) console.log("id in Error"), id = '';
        }
        // 局部打印
        if (id) {
          localPrint();
        } else {
          // 直接全局打印
          window.print();
        }
      });

    });
    const localPrint = () => {
      if (closeBtn) {
        closeBtn = false;
        new Print({
          ids: id, // * 局部打印必传入id
          standard: '', // 文档类型，默认是html5，可选 html5，loose，strict
          extraHead: binding.value.extraHead, // 附加在head标签上的额外标签,使用逗号分隔
          extraCss: binding.value.extraCss, // 额外的css连接，多个逗号分开
          popTitle: binding.value.popTitle, // title的标题
          endCallback() { // 调用打印之后的回调事件
            closeBtn = true;
          }
        });
      }
    };
  }
};
